{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# This allows multiple outputs from a single jupyter notebook cell:\n",
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"all\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.0.3'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import pandas as pd\n",
    "pd.__version__  # for the record"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(252, 9)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>UpperB</th>\n",
       "      <th>LowerB</th>\n",
       "      <th>PercentB</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-07-01</th>\n",
       "      <td>132.089996</td>\n",
       "      <td>134.100006</td>\n",
       "      <td>131.779999</td>\n",
       "      <td>133.919998</td>\n",
       "      <td>117.161659</td>\n",
       "      <td>202385700</td>\n",
       "      <td>132.373927</td>\n",
       "      <td>125.316073</td>\n",
       "      <td>1.219057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-05</th>\n",
       "      <td>133.779999</td>\n",
       "      <td>134.080002</td>\n",
       "      <td>133.389999</td>\n",
       "      <td>133.809998</td>\n",
       "      <td>117.065437</td>\n",
       "      <td>165936000</td>\n",
       "      <td>133.254297</td>\n",
       "      <td>124.912703</td>\n",
       "      <td>1.066618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-06</th>\n",
       "      <td>133.490005</td>\n",
       "      <td>134.139999</td>\n",
       "      <td>133.110001</td>\n",
       "      <td>133.970001</td>\n",
       "      <td>117.205429</td>\n",
       "      <td>143331600</td>\n",
       "      <td>134.040915</td>\n",
       "      <td>124.627085</td>\n",
       "      <td>0.992467</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close   Adj Close  \\\n",
       "Date                                                                     \n",
       "2011-07-01  132.089996  134.100006  131.779999  133.919998  117.161659   \n",
       "2011-07-05  133.779999  134.080002  133.389999  133.809998  117.065437   \n",
       "2011-07-06  133.490005  134.139999  133.110001  133.970001  117.205429   \n",
       "\n",
       "               Volume      UpperB      LowerB  PercentB  \n",
       "Date                                                     \n",
       "2011-07-01  202385700  132.373927  125.316073  1.219057  \n",
       "2011-07-05  165936000  133.254297  124.912703  1.066618  \n",
       "2011-07-06  143331600  134.040915  124.627085  0.992467  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Adj Close</th>\n",
       "      <th>Volume</th>\n",
       "      <th>UpperB</th>\n",
       "      <th>LowerB</th>\n",
       "      <th>PercentB</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2012-06-27</th>\n",
       "      <td>132.419998</td>\n",
       "      <td>133.429993</td>\n",
       "      <td>131.970001</td>\n",
       "      <td>133.169998</td>\n",
       "      <td>118.980804</td>\n",
       "      <td>108088000</td>\n",
       "      <td>136.447962</td>\n",
       "      <td>128.140042</td>\n",
       "      <td>0.605441</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-28</th>\n",
       "      <td>132.289993</td>\n",
       "      <td>132.990005</td>\n",
       "      <td>131.279999</td>\n",
       "      <td>132.789993</td>\n",
       "      <td>118.641281</td>\n",
       "      <td>169242100</td>\n",
       "      <td>136.500761</td>\n",
       "      <td>128.219241</td>\n",
       "      <td>0.551922</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2012-06-29</th>\n",
       "      <td>135.199997</td>\n",
       "      <td>136.270004</td>\n",
       "      <td>134.850006</td>\n",
       "      <td>136.100006</td>\n",
       "      <td>121.598610</td>\n",
       "      <td>212250900</td>\n",
       "      <td>136.721010</td>\n",
       "      <td>128.792993</td>\n",
       "      <td>0.921670</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close   Adj Close  \\\n",
       "Date                                                                     \n",
       "2012-06-27  132.419998  133.429993  131.970001  133.169998  118.980804   \n",
       "2012-06-28  132.289993  132.990005  131.279999  132.789993  118.641281   \n",
       "2012-06-29  135.199997  136.270004  134.850006  136.100006  121.598610   \n",
       "\n",
       "               Volume      UpperB      LowerB  PercentB  \n",
       "Date                                                     \n",
       "2012-06-27  108088000  136.447962  128.140042  0.605441  \n",
       "2012-06-28  169242100  136.500761  128.219241  0.551922  \n",
       "2012-06-29  212250900  136.721010  128.792993  0.921670  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('data/SPY_20110701_20120630_Bollinger.csv',index_col=0,parse_dates=True)\n",
    "#df = df.loc['2012-01-01':,:]\n",
    "df.shape\n",
    "df.head(3)\n",
    "df.tail(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "\n",
    "#### Using this dataframe, we can of course plot a basic ohlc or candlestick plot:\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x414 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import mplfinance as mpf\n",
    "\n",
    "mpf.plot(df,volume=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(252, 9)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Index(['Open', 'High', 'Low', 'Close', 'Adj Close', 'Volume', 'UpperB',\n",
       "       'LowerB', 'PercentB'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape\n",
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "ndf = df[df.columns[[0,1,2,3,5]]].copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Volume</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-07-01</th>\n",
       "      <td>132.089996</td>\n",
       "      <td>134.100006</td>\n",
       "      <td>131.779999</td>\n",
       "      <td>133.919998</td>\n",
       "      <td>202385700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-05</th>\n",
       "      <td>133.779999</td>\n",
       "      <td>134.080002</td>\n",
       "      <td>133.389999</td>\n",
       "      <td>133.809998</td>\n",
       "      <td>165936000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-06</th>\n",
       "      <td>133.490005</td>\n",
       "      <td>134.139999</td>\n",
       "      <td>133.110001</td>\n",
       "      <td>133.970001</td>\n",
       "      <td>143331600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close     Volume\n",
       "Date                                                                 \n",
       "2011-07-01  132.089996  134.100006  131.779999  133.919998  202385700\n",
       "2011-07-05  133.779999  134.080002  133.389999  133.809998  165936000\n",
       "2011-07-06  133.490005  134.139999  133.110001  133.970001  143331600"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "(252, 5)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ndf.head(3)\n",
    "ndf.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "#mpf.plot(ndf.tail(30),type='candle')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "s1 = pd.Series(df['UpperB'].iloc[0:70])\n",
    "s2 = pd.Series(df['LowerB'].iloc[30:100])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Date\n",
       "2011-07-01    132.373927\n",
       "2011-07-05    133.254297\n",
       "Name: UpperB, dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Date\n",
       "2011-10-07    122.666859\n",
       "2011-10-10    122.974478\n",
       "Name: UpperB, dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Date\n",
       "2011-08-15    110.401081\n",
       "2011-08-16    109.919975\n",
       "Name: LowerB, dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Date\n",
       "2011-11-18    120.990128\n",
       "2011-11-21    120.045082\n",
       "Name: LowerB, dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Volume</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-08-01</th>\n",
       "      <td>130.839996</td>\n",
       "      <td>130.960007</td>\n",
       "      <td>127.529999</td>\n",
       "      <td>128.779999</td>\n",
       "      <td>325790900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-08-02</th>\n",
       "      <td>127.809998</td>\n",
       "      <td>128.500000</td>\n",
       "      <td>125.489998</td>\n",
       "      <td>125.489998</td>\n",
       "      <td>346653800</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close     Volume\n",
       "Date                                                                 \n",
       "2011-08-01  130.839996  130.960007  127.529999  128.779999  325790900\n",
       "2011-08-02  127.809998  128.500000  125.489998  125.489998  346653800"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Volume</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-09-23</th>\n",
       "      <td>112.110001</td>\n",
       "      <td>114.160004</td>\n",
       "      <td>112.019997</td>\n",
       "      <td>113.540001</td>\n",
       "      <td>307242500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-09-26</th>\n",
       "      <td>114.610001</td>\n",
       "      <td>116.400002</td>\n",
       "      <td>112.980003</td>\n",
       "      <td>116.239998</td>\n",
       "      <td>260673700</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close     Volume\n",
       "Date                                                                 \n",
       "2011-09-23  112.110001  114.160004  112.019997  113.540001  307242500\n",
       "2011-09-26  114.610001  116.400002  112.980003  116.239998  260673700"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1.head(2)\n",
    "s1.tail(2)\n",
    "s2.head(2)\n",
    "s2.tail(2)\n",
    "af = ndf.iloc[20:60].copy()\n",
    "af.head(2)\n",
    "af.tail(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>UpperB</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-07-01</th>\n",
       "      <td>132.373927</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-05</th>\n",
       "      <td>133.254297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-06</th>\n",
       "      <td>134.040915</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-07</th>\n",
       "      <td>135.077014</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-08</th>\n",
       "      <td>135.721110</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                UpperB\n",
       "Date                  \n",
       "2011-07-01  132.373927\n",
       "2011-07-05  133.254297\n",
       "2011-07-06  134.040915\n",
       "2011-07-07  135.077014\n",
       "2011-07-08  135.721110"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ds1 = pd.DataFrame(s1)\n",
    "ds1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "70"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "40"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(s1)\n",
    "len(af)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "s1orig = s1.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Date\n",
       "2011-07-01    132.373927\n",
       "Name: UpperB, dtype: float64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Date\n",
       "2011-08-19    136.263091\n",
       "Name: UpperB, dtype: float64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Volume</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-08-01</th>\n",
       "      <td>130.839996</td>\n",
       "      <td>130.960007</td>\n",
       "      <td>127.529999</td>\n",
       "      <td>128.779999</td>\n",
       "      <td>325790900</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close     Volume\n",
       "Date                                                                 \n",
       "2011-08-01  130.839996  130.960007  127.529999  128.779999  325790900"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Volume</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-09-26</th>\n",
       "      <td>114.610001</td>\n",
       "      <td>116.400002</td>\n",
       "      <td>112.980003</td>\n",
       "      <td>116.239998</td>\n",
       "      <td>260673700</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Open        High         Low       Close     Volume\n",
       "Date                                                                 \n",
       "2011-09-26  114.610001  116.400002  112.980003  116.239998  260673700"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1 = s1orig.iloc[0:35]\n",
    "s1.head(1)\n",
    "s1.tail(1)\n",
    "af.head(1)\n",
    "af.tail(1)\n",
    "mf = pd.merge(s1,af,how='outer',on='Date',sort=True)#,left_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>UpperB</th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Volume</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-07-01</th>\n",
       "      <td>132.373927</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-07-05</th>\n",
       "      <td>133.254297</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                UpperB  Open  High  Low  Close  Volume\n",
       "Date                                                  \n",
       "2011-07-01  132.373927   NaN   NaN  NaN    NaN     NaN\n",
       "2011-07-05  133.254297   NaN   NaN  NaN    NaN     NaN"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>UpperB</th>\n",
       "      <th>Open</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Close</th>\n",
       "      <th>Volume</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2011-09-23</th>\n",
       "      <td>NaN</td>\n",
       "      <td>112.110001</td>\n",
       "      <td>114.160004</td>\n",
       "      <td>112.019997</td>\n",
       "      <td>113.540001</td>\n",
       "      <td>307242500.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-09-26</th>\n",
       "      <td>NaN</td>\n",
       "      <td>114.610001</td>\n",
       "      <td>116.400002</td>\n",
       "      <td>112.980003</td>\n",
       "      <td>116.239998</td>\n",
       "      <td>260673700.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            UpperB        Open        High         Low       Close  \\\n",
       "Date                                                                 \n",
       "2011-09-23     NaN  112.110001  114.160004  112.019997  113.540001   \n",
       "2011-09-26     NaN  114.610001  116.400002  112.980003  116.239998   \n",
       "\n",
       "                 Volume  \n",
       "Date                     \n",
       "2011-09-23  307242500.0  \n",
       "2011-09-26  260673700.0  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mf.head(2)\n",
    "mf.tail(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "#mf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid syntax (<ipython-input-17-a6774c8535dd>, line 1)",
     "output_type": "error",
     "traceback": [
      "\u001b[0;36m  File \u001b[0;32m\"<ipython-input-17-a6774c8535dd>\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m    STOP HERE\u001b[0m\n\u001b[0m            ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
     ]
    }
   ],
   "source": [
    "STOP HERE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "apds = [ mpf.make_addplot(tcdf),\n",
    "         mpf.make_addplot(low_signal,scatter=True,markersize=200,marker='^'),\n",
    "         mpf.make_addplot(high_signal,scatter=True,markersize=200,marker='v'),\n",
    "         mpf.make_addplot((df['PercentB']),panel='lower',color='g')\n",
    "       ]\n",
    "\n",
    "mpf.plot(df,addplot=apds,figscale=1.3,volume=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "apds = [ mpf.make_addplot(tcdf,linestyle='dashdot'),\n",
    "         mpf.make_addplot(low_signal,scatter=True,markersize=200,marker='^'),\n",
    "         mpf.make_addplot(high_signal,scatter=True,markersize=200,marker='v'),\n",
    "         mpf.make_addplot((df['PercentB']),panel='lower',color='g',linestyle='dotted')\n",
    "       ]\n",
    "\n",
    "mpf.plot(df,addplot=apds,figscale=1.5,volume=True,style='starsandstripes')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
